{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- https://blog.csdn.net/nihao_t/article/details/113103001\n",
    "- https://blog.csdn.net/yawei_liu1688/article/details/79011697?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-79011697-blog-117364492.pc_relevant_default&spm=1001.2101.3001.4242.1&utm_relevant_index=3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.数据读取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "import numpy as np\n",
    "from tqdm import tqdm\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import precision_recall_fscore_support\n",
    "from sklearn.model_selection import cross_val_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "train = pd.read_excel(r'D:\\jupyter\\DK\\DK数据\\2数据处理\\论文\\5训练集.xlsx')\n",
    "test = pd.read_excel(r'D:\\jupyter\\DK\\DK数据\\2数据处理\\论文\\5测试集.xlsx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "labelEncoder = LabelEncoder()\n",
    "\n",
    "train_y = labelEncoder.fit_transform(train['标引'])\n",
    "test_y = labelEncoder.fit_transform(test['标引'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_X = train.iloc[:,4:]\n",
    "test_X = test.iloc[:,4:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.模型构建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计评估指标\n",
    "# 当前模型的评估结果 p\\r\\f1\\acc\n",
    "evaluation_ls = []\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1LogisticRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调节参数\n",
    "train_score_ls = []\n",
    "test_score_ls = []\n",
    "for i in np.linspace(0.01,2,10):\n",
    "    model = LogisticRegression(random_state=0\n",
    "                               ,penalty='l2',solver=\"newton-cg\",C=i,max_iter=1000\n",
    "                              )\n",
    "    model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "    train_score_ls.append(np.mean(model_s))\n",
    "    \n",
    "    model = model.fit(train_X,train_y)\n",
    "    test_score_ls.append(model.score(test_X,test_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.linspace(0.01,2,10),train_score_ls,label = 'train') # 训练\n",
    "plt.plot(np.linspace(0.01,2,10),test_score_ls,label = 'test') # 测试\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7918552036199095"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 参数确定，计算acc\n",
    "model = LogisticRegression(random_state=0\n",
    "                               ,penalty='l2',solver=\"newton-cg\",C=2,max_iter=1000\n",
    "                              )\n",
    "\n",
    "model.fit(train_X,train_y) \n",
    "score_r = model.score(test_X,test_y)\n",
    "score_r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.783673</td>\n",
       "      <td>0.831169</td>\n",
       "      <td>0.806723</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.802030</td>\n",
       "      <td>0.748815</td>\n",
       "      <td>0.774510</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.792437</td>\n",
       "      <td>0.791855</td>\n",
       "      <td>0.791345</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.783673  0.831169  0.806723      231\n",
       "1     1   0.802030  0.748815  0.774510      211\n",
       "2    总体   0.792437  0.791855  0.791345      442"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调节参数\n",
    "train_score_ls = []\n",
    "test_score_ls = []\n",
    "for n_neighbors in range(1,41):\n",
    "    model = KNeighborsClassifier(n_neighbors=n_neighbors)\n",
    "    model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "    train_score_ls.append(np.mean(model_s))\n",
    "    \n",
    "    model = model.fit(train_X,train_y)\n",
    "    test_score_ls.append(model.score(test_X,test_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD5CAYAAAAp8/5SAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAAsTAAALEwEAmpwYAABKPUlEQVR4nO3dd3iUVfbA8e9NJx1SKEkIvRO6FAFBRBERxAJYcNcC9rWsdYtrWfdn720Ve0MEUUSUsqDSews11BQgBNJ7u78/7gRSZpJJSDJh5nyeJ4+Zd9535s5Izty599xzldYaIYQQzsvN0Q0QQgjRsCTQCyGEk5NAL4QQTk4CvRBCODkJ9EII4eQk0AshhJPzsOckpdQ44A3AHZiltX6+0v2vAaMtN32BcK11sOW+tsAsIArQwHit9RFbzxUaGqrbtWtXqxchhBCubvPmzae01mHW7qsx0Cul3IF3gLFAIrBRKbVAa7277Byt9YPlzr8P6FfuIT4HntNaL1VK+QOl1T1fu3bt2LRpU03NEkIIUY5S6qit++wZurkAOKC1PqS1LgRmA5OqOf964BvLE/cAPLTWSwG01tla61y7Wy6EEOKc2RPoI4CEcrcTLceqUEpFA+2B5ZZDXYB0pdT3SqmtSqmXLN8QhBBCNJL6noydBszVWpdYbnsAI4CHgUFAB+DPlS9SSs1USm1SSm1KSUmp5yYJIYRrsyfQJ2EmUstEWo5ZMw3LsI1FIrDNMuxTDPwA9K98kdb6A631QK31wLAwq3MJQggh6sieQL8R6KyUaq+U8sIE8wWVT1JKdQOaA2srXRuslCqL3hcDuytfK4QQouHUGOgtPfF7gcXAHmCO1nqXUuoZpdTEcqdOA2brcuUwLUM4DwP/U0rtBBTwYX2+ACGEENVTTa1M8cCBA7WkVwohRO0opTZrrQdau09WxgohRCPYfDSNX3Yed8hz27UyVggh6kt+UQneHm4opRzdlEYRm5TBy0v28ds+k1H4+yOjiA7xa9Q2SI9eCNFoTmcXMOLFFfxn0R5HN6XB7U/O4s4vNjPhrVVsS0jnvos74abgu02Jjd4W6dELIRrNq0v3k5JVwCerjzB9SDvahvg6ukn17sipHF5ftp8ftx/Dz8uDBy7pzK3D2xPo48nOpAzmbk7kwbFdcHdrvG800qMXQjSK3ccy+WZDPFf2aYOHu+K1ZfsbvQ17jmey61hGgzx2Unoej8/bwZhXf+fXXSeYObIDKx8dzQOXdCHQxxOAqQOjOJGZzx9xjbswVHr0QogGp7XmmYW7CGrmyb8n9aJNsA8f/HGIOy/qSNdWAbV6rMLiUrw8at9H3Xsik2veW4OHm2LZQxcRHuhT68ewJiWrgHdWHODr9fEATB8Szd2jOxIeUPXxx3RvSQs/L+ZsTGB01/B6eX57SI9eCNHgfo09wbpDqfz10q4E+Xpy58iO+Ht58PKSfbV6nK/WH6X3U4v5NfZEra47nV3A7Z9tws/bg/ziUv61YFetrrcmI7eIF3/dy8gXV/DFuqNM7hfBikdG8dTEnlaDPICXhxuT+0WwbE8yp7MLzrkN9pJAL4SoldUHTvHMT7spKC6p+WRMls1zi/bQrVUA0waZairN/byYObIDS3cnsyU+za7H2Xsik6d/2o3WcN83W1ix96Rd1xUWl3LXl1tIySpg1s0DeeCSzvwSe6LWHxZlsguKeet/cQx/cTnv/X6QsT1asuyhi3jh2hgigpvVeP3UQVEUlWjmb7VVSab+SaAXQtTKC7/u5ePVh7n3660UlVS7vQQAs1YeIjEtjycn9MDD/WzIuWV4e0L8vHh5cc29+vyiEv7yzVYCfTz59YERdG0VwB1fbmb1gVPVXqe15skfY9lwJJUXr42hT1QwM0Z0oEfrQJ78MZaMvKKaX7BFaanmk9WHuejFFbyydD9DOoTwy/0jePP6frQPtT9dskvLAPpGBTNnUwKNtWBVAr2ontZweCWU1vwHLZzfgZPZ7EjM4IJ2LVi6O5kHv91GSantYHUiI593VhxkXM9WDOsUWuE+f28P7hndiTUHT7MqrvqA/e+fd7M/OZtXp/ShQ5g/X9w6mPYhftz+2SY2Hkm1ed2na44we2MC94zuyKS+prq6p7sbL1wTw6nsAv7PzjRPrTVP/bSLp3/aTbfWAcy/exgf3jyQbq0C7bq+sqmDotifnM22hPQ6XV9bEuhF9fYuhM8mwK7vHd0SUU8OpWTT+6nFNQZXa37YmoSbgrdv7Mffxndj4Y7jPDp3B6U2gv0Lv+6lRGv+Nr671ftvHNKWNkE+vLR4r83e7eJdJ/hyXTwzRrRnZBdTH7G5nxdf3j6Y1sE+3PLJRqsB84/9KTy7cDdje7Tkr2O7Vrivd2QQM0Z0YPbGBNYcrPlbwX8W7eHztUeZMaI9X942mH5tm1d7TU0mxLSmmac7cxopp14CvajeNkvV6e2zHdsOUW8+X3uUrPxiPlx5qFbXlZZqftiWxPDOYYQH+DBzZEcevKQL87Yk8s8fY6sE6s1H05i/NYkZI9rbzJf39nDngUu6sD0xg8W7kqvcfzwjj8fm7aBXRCCPXNatwn1hAd58ffsQWvh5cfNH6yukTR5Myeaer7fQpWUAr0/ti5uVnPUHLulCdIgvT3y/k7xC2/MNry7dz4crD3Pz0Gj+Nr57vazoDfDxZHzv1vy0/Ri5hcXn/Hg1kUAvbMtNhbgl4B0IB5dDtn2TX6LhHT2dQ1J6Xq2vyy0sZt7mRJp5uvP7/hSOns6x+9pNR9NITMvj6n5nN5j7y5hO3DWqI1+tj+fZhXvOBPvSUs0zP+0iPMCbu0d1qvZxr+4fQccwP15Zsq/CMFBJqebBb7dRWFzKm9P6WU2pbBXkw1e3D8bf24PpH20gLjmLjNwiZny2CU93Nz68eSB+3tazyJt5ufN/V/fm6OlcXreR0//OigO8tfwA0wZF8dSVPeu1bMPUQVFkFxSzaGfdJoVrQwK9sG3X91BaBBNeA10CsfMc3SKByfq47v21/OnjDTaHTGxZsO0YWQXFvHRdDO5u6kzutz3mb03C18udS3u2PHNMKcWjl3Xlz8Pa8fHqw2fSJb/fmsT2xAwev7ybzUBbxsPdjb9e2pW4k9kVMlHe//0g6w6l8tTEnnQI87d5fVQLX76aMQR3N8UNs9Yz44tNJKTl8v5NA4hqUf3K22EdQ5k2KIoPVx5iZ2LFhVSzVh7ipcX7uKpvG56b3Nvqt4JzMahdc9qH+jFnU0LNJ58jCfTCtu3fQngP6HUNtO4rwzdNxDsrDnAyq4ADJ7NZvMv+3qDWmi/WHaVrywCu6N2aS3u05NtNCeQX1ZwmmV9Uws87jnFZz1b4elUM3Eop/nVlD66/oC3vrDjIS4v38sKve+kbFcxVfa1uL13FuJ6t6BURyGtL91NQXMKW+DReXbqfCTGtuW5AZI3Xtw/14+vbB1NSqtlwOJV/X9WLC9q3sOu5nxjfnRB/bx6bt+NMFtEXa4/w75/3ML53K16+rk+DlCtQSnHdwEg2HE7l8Cn7v1nVhQR6Yd3pg5C4AWKmgFIQMxWOb4OU2i1wYcV/4KvrGqSJrujo6Rw+WnmYq/q2oUOoH2+vOGB3it62hHR2HcvkpqHRKKWYPiSa9Nwift5Rc+nc3/adJDO/mMn9rAdupRTPXdWLq/tF8M6Kg6RkFfCvK3vY3Qt2c1M8clk3ktLzmLXyMPfP3kqrQB+em9zb7uGSzi0D+O7OobxzQ3+mDmpr1zUAQc08eXZST3Yfz+TDlYeYszGBf/64i0u6h/P61H4VUkLr27X9I3F3Uw3eq5dAL6zb+R2goPcUc7v3taDca9erz0qGVa+bcf4TsQ3RyvNWSanmYEp2ra977uc9eLgrnhjfnTtHdWTXsUx+229f3ZQv1h3Fz8v9TLAe2jGEDmF+fLn+aI3Xzt+aRFiAN8M6htg8x81N8eK1Mdw8NJr7Lu5U68yUkZ1DGdy+BS8t3sex9HzevL4vQc08a/UYHcP8uSKmda2uARjXqzXjerbi9aVxPPb9DkZ0DuXtG/rXqdRCbYQH+jC6axjzNidSbMeahLqSQC+q0toE9PYjIMjSg/MPh44Xmw8Ae3Pq175txvjdPGCHDPuU9+SPsYx55Xfmb7U/vW5V3CmW7E7mntGdaBnow+R+EUQEN+Pt5TX36tNyClm44ziT+0fgbxkzV0px0+BotsanE5tku9BXem4hy/eeZFKfNjX2bj3c3XhmUi/+emnXas+zRinFo+O64eGmePCSzgyItm/opb48M6knft7uDG7fgg+mD8TH071Rnve6gVGczCrgdzs/sOtCAr2oKnEjpB2GmGkVj8dMhYwEiF9T82PkpsLGj6DXtdBpLOycC6X2LZl3dr/GnuCr9fEENfPksXk72WpHCYDiklKeWbiLqBbNuG14e8As/Lnzog5sPprGukO2Fw0BfLc5gcLiUm4aEl3h+DUDIvHxdOPLdbZ79T/vPE5RieYqG8M29WlAdHM2/eMS7r24c4M/V2XhgT788ehovr59CM28GifIA1zcLZxQf2++3dhwwzcS6EVV22eDhw90v7Li8W5XgJe/fcM3696DohwY8VfoMxWyjsPhPxqmveeR4xl5PP79DmIig1j64EhaBnoz84vNHM+oPlXy6w3x7E/O5u/je1ToaV43MIqwAG/eWXHA5rWlpZov18VzQbsWVVZyBjXzZFKfCH7cdsxmOYD5W5Lo0tKfnm3qtgq0toJ9vRrleawJ8PGs9+yamni6u3FN/wiW7z1JSlbDFDqTQH8+SDtiAmdd62Lsmm/KGNijuNCkVXa7Anwq/WF7+UL3ibD7RyiqJjDlZ8CG/5oPivBu0OVy8A6CHd/Wrf1OoqRU88Bskxf+xrR+hAf68NGfBpFbUMzMzzfbXLSTnlvIq0v3M6xjCJeVS20E8PF0Z8aI9qw6cMrmN4M/4lKIT83lxiHWJyinD40mr6iE77dUHUaKP53LpqNpXNUvwmW2/nOE6wZGUVyqazWUVxsS6M8HvzwGvz5uMmFqq7QEFvwFZt9gPjBqcmAp5KVVHbYp02cqFGTC/l9tP8bGWSbYj3jY3Pb0gZ6TYPcCKGzYNLKm7L3fDrD+cCrPTOp1pghWl5YBvHl9P2KPZfDI3O1Wx9pfXxZHZl4RT17Zw2qwvXFwNMG+njZ79V+uiyfU34txvVpZvb9XRBB9o4L5ct3RKs//wzaT1z7JzjRJUTedwv0ZEN2cuZsl0Lum4zvOBtWjq2t/fXKsCcwFmTDvdiipoVrf9tngG2omXq1pNwICWpsce2sKc2DtO2Zcvk3fs8djppqhnL2Lav8amqCUrAJunLWOV5bso7C45snpzUfTeG1ZHBP7tOGa/hWD5pjuLXlsnKkb8/byisF6f3IWX6w7yo2Do20W0PLz9uDWC9uzbM9J9hzPrHBfUnoey/cmM3VQFN4etsedbxoSzcGUHNYeOn3mmNaaH7YmMaRDC7vK74pz8/TEnnxyywUN8tgS6Ju6la+YEgTNWsBROyZBKyu75tLnzCTrb/9n+9y8dPOh0vtacLexmtHNHXpfZ3r+OVaKQW3+DHJPw8hHKh5vOwyCopwi+yYtp5DpH61n/aFU3lp+gMnvrmZ/cpbN8zPzi7h/9lZaB/nw78m9rPbK7xjZgav7RfDK0v38Gmvy2rXWPLtwN/7eHjw0tku1bfrT0Hb4e3tU6dV/sz4eDVx/QfV55RNiWhPs61lhUnZHYgaHTuXYzJ0X9atXRFCDfaBKoG/KUvaZ8fBBt0O74fZlu1R2dA0Et4Vh90K/6bDyVduTort/gJJC0/uuTp9pUFoMsZUqWhblw5o3Ta+/7eCK97m5mcVXB5eb/PrzVEZeETd/vIFDp3L49JYL+GD6AE5k5DPhrVXMWnmoSkkCrTX/mB/L8Yx83pjW78zeoZUppfjP1b3p1zaYB7/dzq5jGSzbc5KVcad48JLONPerfoIyyNeT6UOj+Xnn8TP5+YXFpczeGM+YbuFENq++FICPpzvXDYhk8a5kkjPzAZM77+XhxuW9a5+XLpoWCfRN2arXTPbL0Hsg+kJIj4f0WqRgaW0CffSF5vblL0BIJ/h+JuScrnr+9m8htAu06Vf947bsCS17VZ1c3faVya4Z+bD162Kmgi6F2Ln2v4YmJLugmFs+2cDeE5m8f1N/hncO5dKerVj84EhGdg7j3z/v4foP15GYlnvmmnlbkliw/RgPjOnMgOjqFxD5eLrz3+kDCPb1ZObnm3l24W46h/tzY6WUSFtuG94ebw833vvNzOX8uusEp7ILq6RU2nLj4GhKSjWzNyRQVFLKT9uPMbZ7S5sfTg0mI1H2P6hnEuibgBMZ+dz+2cYzPSkAUg/Djjkw8FbwC4XoYeZ4/Fr7H/hUHOSegrZDzW0vP7j2IzO0suDeilk8aUfNN4aYqabkQU1ipkLSJjhlGSooKYLVr0PkIGh/kfVrwrqamjnnYfZNXmEJt3+2ke2JGbx1fT8u7nY2+yXU35sPbx7Ai9fGEJuUwbjXV/LdpgQOn8rhyR9jGdy+BXePrr6CY5nwAB8+vHkgp3MKiE/N5ckre+Bp5xL8UH9vrr+gLT9sTSIxLZcv1x2lbQtfRnYOs+v6dqF+jOwSxtcbjrJi70lO5xQ2Su78GQVZsOA+eK0nfDnZBHxRLyTQ15ONR+pemGjOpgSW7TnJV+UrCa5+3YyHD7vP3G7Z06Qo1mZCtuzcsh49QOs+cMnTsG+RyY4ps3OO+W/MFPseu/d1oNzOBu2d35lvHCMfqf6Dos80OL4dTu61/3U4WEFxCTO/2MT6w6m8OqUP43pVHcpQSjFlYBS/PjCSHm0CeWTuDia+tQpPdzdem9q3VkWxekUEMevmQfzjiu6MsDNIl5k5sgNKwePzdrLhcCo3Dm5bq7zwmwa3JTmzgCd/3EVzX08u6lK756+zo2vhvQthyxfm31bCRnh3mOnsNNJ2e85MAn09uffrLTw2d0edrl244xgAczclmHrcGUmw7WvodxMEWoKKmzu0HVK7Cdmja8AvHEI6Vjw+5C6TFbP475C8y1Ly4FvzgRBsZzGowNam577jWygpNpPGrXpD50urv66XpWaOZVK2oLikQWt8nKuiklLu+WorK+NO8cLVMTWmGUa18OWbGUP42/huuLsrXro2hjZ1mGAb3jmU20d0qPV1rYOace2ASFYdOIWXhxvXDYyq1fUXdwunTZAPJzLzmRDTpsFrvVBcAEufhE8uNx2EW36Ba2bBXavMGozvZ8B3fzYrrUWdSaCvB3mFJSRnFrDhSCoJqbk1X1DO/uQs9idnM7RDCMcy8ll14BSsecvkv1/4QMWTo4fCqf2QbWdNjPi1Zsincg9bKbjqPfAJgrm3mg+E03E1T8JWFjMV0o/Ckr/D6QMmb76mYR//MOg0BnZ8R2FRMZPeXs0D326r3fM2kuKSUh6YvY1le5J5ZlJPpgyyL2i6uylmjuzI1n+O5dKe1nPXG9KdF3XE3U0xIaY1LWqYxK3Mw92NGwabD/vJ/Rt42OZELHx4Max+A/rfDHeuMv/GAVp0MEF/zL9g78/w7hCIW9qw7XFiEujrQfnJtwXbj9Xq2oXbj+Gm4OUpfWju68midTtg86cmiDavNIlWNgRjzzh9erypS1N+2KY8/zCY/D6k7CX38ykUu3mR3+VK6+fa0v1K8PSF9e9DaFezatYeMVMhM5Glv3zP3hNZ/LzzOEcauB53bZmUyG38vPM4fx/fnZuHtqv1YzhqJWl0iB9z7xzKkxN61On6mSM78vWMwfQ/x31RbSotMYkGH4wyu5bdMAcmvgneARXPc3OHEQ/BjOXgGwJfXQs/PQAFta/66eqq3/pF2CXe0osP9vXk+y2J3D2qo11/5FprFu44zuD2IUQEN2Nyv0habnge7Z6PGvFQ1Qta9wWPZqYH3qOGoFo2xFPWQ7Km0xh2tfszPY98ysKSwTz71hbuvbgzUwdG2feV3dsfuk0w4/sjHjIplPboOp5SL38KtnzNgOhH2ZmYwSerD/P0pF72Xd/A1h48zcPfbedEZj5/G9+NGSNrP4TiaOeyebWXhxvDOobW7eK8dFj2L0jabPuc/EzzTbD7RJjwOvjZLn0MQOsYmPkbLP+3+bZ7+HfT2w9o/G9L5yvp0deDskB/+/D2HEzJITYps4YrjN3HMzl0KocJfcw4/LTeftzotpgjLcdCqJXqfR5eEDXIvgnZo6vN0Ey47V5dXmEJtyeO42ffyURP+idtW/jyzx9iGfPqb8zdnFhh/06bRjwEQ+42Y+/28vJlq99Ixup1vDipExP7tmHOpkQycmtYtWuFXW20U35RCf9euJvrP1yHl4cbc+8cysyRHWu+UBiHfoP3hpkJVf9WZoGctZ+WveDqD2HK5zUH+TIe3nDps/DnhZB5HObfISmYtSA9+nqQkJpHM093pg9px5v/O8D8rUn0jgyq8bqFO47j7qa43JLF0eXIN6DyeSR3Au9qbf1bQfSF8NvzppaMTzXPcXSNSat0s73s/dM1RzieXUr4na/Su10L5gzQ/L4/hZeX7OPh77bz/u8HeWhsF8b1bGU7cyO8O4yrZrWtFbuOZfBKcj++9lpEQOoqbr3wEuZuTuTrDfHcNcr+wLr5aBq3fbaR/5vc+5wX9cQmZfDQnG3sT85m+pBonhjfrcqWecKGojxY9pQZwgvpDLcvhYgBDfNc7Yabf28LHzCL84Y/0DDP42TkX3I9iE/NpW0LX4J8Pbm4WzgLth/jb+O7VbtJgxm2OcawjiFmwqwgC9a9R0L4KH6JD2VnUgYxkcFVL2w7FNCQsAE6j7X+4NknzeRo/5ttPn9GXhHv/36Q0V3DGNTObPCglGJU13Au6hLGr7EneGXpfu7+agtdWvoT2dyXslBvPn/UmXnX1kE+PDau5k2gy173Mz/t5oB3b0r9WuO241t63HA1F3YK4bM1R7h9RHu78sZLSzX/WhBLem4Rj83bQUxUcJ2Wj5eUat7//SCvL9tPc18vPr1lEKO6htf6cVxW0maYf6dJEhh8p5k89ap+Fe45G/Bns8J6+bNmc5yG+lBxIjJ0Uw8S03LP7DY/uX8Ep7ILTPZMNXYkZpCQmseVMW3MgY0fQX46zcf9DW8PN9t7SEYOMjs2VTd8c2Z83sZELPDhH4fIyCuyuhOQUorLe7dm8QMjeXVKH4KaeZKSVUByVj4nMvM5npHPsfQ8EtPySEjN5av18dz+2Sa7Npn+NfYE6w+n8uBlPXDrMwUOLIOcU9w+vAMnMvNZtLPm/UsB5m5OJDYpk4cv7UKphgdmb611mmZCai5T/ruWlxbv49IerVj8wEgJ8vYqKTLfLGeNNYXspv9gVl43dJAH09OY+KYZHpp7m+kkiWpJj/4caa2JT81lqGUvzVFdwwhq5sn8rUnVBo2FO47h6a64rGcr89V37dvQYTT+HQYzvvc2ftx2jH9c0aPqdmZevtCmf/X59EfXmGyY1n2s3p2SVcDHqw8zIaY1vSJsD/+4uymu7h/J1f0jbT8X8OO2JB74dhszv9jMhzcPsFklMb+ohOcW7aFbqwBTZCtlmkmti53HRYNm0jHMjw9XHmJinzbVTmZn5Rfx4uK9DIxuzj2jOxHRvBkPfrudt1cc4IFLqi/+VaYsyGcXFPP61L5M6lv9c4pyUg+btNxjW8yewuNfgmbBjduGZs3hmg/h0yvg54fh6v827vOfZ6RHf45O5xSSW1hCW0uP3tvDnQkxrVm86wTZBcVWrykt1fy84zgjOocR5OtpJrFyUs6sgp0yMIqs/GJ+ibXRu40eBklboNBGzv7RNabn7269Rsk7Kw5QUFxaY0VEe03qG8ELV8fwx/4U7vlqK0U2etazVh4iMS2PJ6/sYVaKtuxhFlltn42bm+K24R2ITcpkw+HqF8e8vfwAp3MK+deVPVFKMblfJJP7RfDm/+LYdKTmhTXHM/K4YdY6cgtL+HbmUNlUozYKc+HrqZB6EK771ATbxg7yZaKHwchHzeK7HXMc04bzhAT6c1S2QKos0ANM7hdBflEpS3adsHrN1oQ0jmXkM6Fst/oTsea/UaYW9ZAOLYgO8WXORhu1PqKHmU23kzZVvS8vzdSgtzFsk5iWy9fr47luQCQdwvzteIX2mTIoimcm9WTZnmQemL2tyjDKiYx83llxkMt7taqYuhcz1fQMT8Vxdf8Imvt68tGqwzaf5/CpHD5efZhr+0dWmPB+ZlJPIpv7cv/sbTa3xAM4mZXPjR+uJz2niM9vvYAejbQ9ntNY/Dc4tc8E+Z6THd0aU3IjaggsfAhSDzm6NU2WXYFeKTVOKbVPKXVAKfW4lftfU0pts/zsV0qlV7o/UCmVqJR6u57a3WSUpVZGlQv0A6KbE9WiGfO3Jlm95qftx/HycGNsD0thrOSd0LzdmQUjSimuGxDJ2kOnOXraykKiqMGAOjN8k5JVwIGTlkUk8esBfbYIWiVvLIsDBX8ZU/+bL988tB1/H9+dn3ce59G5OyqU7H3x172UaM3fxneveFG5mjk+nu7cNCSapXuSbS6geu7n3Xi5u/HIuIpzCwE+nrx5fT+SM/P52/ydVndqSs0pZPqsDRzPyOeTWwbRJyr4nF+zS9m9ADZ/AsP+Yntjmsbm7mG+VSg3+zbWcVE1BnqllDvwDnA50AO4XilVITlba/2g1rqv1rov8BZQqVA5zwJOuTN0WY8+qly9b6UUk/tGsPrAqYoVKTFZHot2HmdUlzACysq/Ju8yucXlXDMgEjeF9a3FmgVDq15wdA3bE9K5/I0/uOz1P3h1yT5KjqwGN0+IHFjlsgMns5i3JZHpQ6LrVH/FHjNGduCvY7vw/dYk/v6DCbhb4tP4fmsSM0a0r/CBCJhFLx1GmZo5paVMHxqNp5sbn6yu2qv/fX8Ky/ac5L4xnQkP8Klyf9+oYB4c24Wfdxznu0rvm6kjv57Dp3P46E8DGWjJNBJ2ykg0lSXb9IOL/+no1lQU3BYmvmEygFY85+jWNEn29OgvAA5orQ9prQuB2cCkas6/Hvim7IZSagDQElhyLg1tqhJS8wj196aZV8UJyEn9IijV8FOlkggbj6RyMquACX0s2TaFuWYv2EqBvnVQM0Z2CbO9cCn6Qkri13PTByvx8TTzAm8uP0DcxsXkhfcFz6qB/JUl+2nm6c7dtchVr4v7xnTmntEd+WZDAk//tJunf9pNeIA3d4+yUao3Zqop2ZCwnvAAH6sLqIpKSnl24W6iQ3y55cJ2Np/7zos6MrRDCE8t2MUhywYc2QXF/PmTDew7kcV/pw9gWKc6rvpsSs61omNtFhuVlsC8GWazmWs+Mgv3mpqek0068arXzZxXXZ3r+9pEK23aE+gjgPK5fomWY1UopaKB9sByy2034BXAxk4UZ66bqZTapJTalJJiZ8GuJsLk0FcNqh3D/OkTGcT3WyoO3yzccQwfTzfGdLNk5JzcA2hThriSqQOjOJ6Rzx9xVd+T5XmdcC/JZ1zISebffSFvTOvHh9O607H4AJ8fa8NHqw5XGDrZkZjOL7EnuG1EB0L8vc/tRdvh4Uu7ctvw9ny65gjbE9J5/PJq8uy7TTBZQpaKlrcNb09eUQnfbDxbtvnLdUc5cDKbf1zRo9q9T93dFK9N7YuXhxt/mb2VjLwibvt0IzsSM3jr+v6Mdob0Sa3h6ymmVkzy7tpdW1piMp2ej4JfHjcZXzX542WzV8EVr1SthNqUjHverCj//g7r21zWJDcV3hoAX14LmbWrWUVRnnk/X+oIKftr/9wNrL4nY6cBc7XWZQnVdwOLtNbV7iCgtf5Aaz1Qaz0wLKyR6l/Xk4S03AoTseVN7hfB7uOZ7Dth8nyLS0r5ZecJxnRreTboJVsmYltVrfMypntLWvh58V25nPqSUs3TP+3i0Q1+APynXyZhASZwjw2Mx5MS8loP5tmFu7lx1nqS0s0f8kuL99Hc15MZI9rXy+uuiVKKf1zRnTsv6sgVMa25qrryvt7+pkDarvlQlE/31oEM7xTKp6uPUFRSSmpOIa8t3c+IzqFc0r3mQN0qyIcXr4khNimTMa/8xoYjZXXknaQ2ytHVELfEDPl9cBGsftME8JqkHYFPJ5iywCEdYf178N+L4NhW29fEr4PfnzdplH2m1dtLaBBefnDtx5CXCj/eU7vetdZmaCo93ry/7w6BnXbuhJa0Bf470ryf+ZmmZHcTY0+gTwLK12eNtByzZhrlhm2AocC9SqkjwMvAzUqp5+vQziapqKSUY+l5VcedLSb0aYO7mzozKbvuUCqncwrPZtuA+WP19IPgdlWu9/JwY3K/CJbuTuZ0dgF5hSXc9eVmPll9hIkX9kWHdMYzsVwly6NrQLlx/59v5MVrYtiRmM641/7gP4v2sDLuFHeP6nR2XqARKKV4/PJuvHND/5o3v4iZaso6xJkRvtuGtz+zgOq1pfvJKSzhnxN62J0GeWnPVkwfEs2p7EJeuKbmOvLnlT9eMvsM3LfF1P9f+k/47EoTyK3RGrZ8bjb2SI6Fq96Hmb/D9PlmsdGsS+C3F8y+AuXlpZkJzuC2pjd/PmjVG8Y+aza53/CB/ddt+gj2LoRLnjLlkkO7wLzb4LtbbNfCLyky79tHY01FzenzYfAdZhOeJpYBZE+g3wh0Vkq1V0p5YYL5gsonKaW6Ac2BM5FHa32j1rqt1rodZvjmc611layd89Wx9DxKNTYDfai/NyM7h/LjtiRKS03JAz8vd0Z3K9crTY41+eQ2Kj9OGRhFUYlm1qrDTPtgLUv3JPOvK3vw5JU9UNHDTI+rrDd3dA206o1qFsyUQWa3o+6tA/ngj0O0CvRh+lD79g51iPYXgX/LMztWXdQljI5hfry8ZB9frT/K9CHRdGkZUMODVPT0xJ6sfHQ0U2q5+UaTlrjJjEEPuw+Co2DqlzDpXTi+4+wOTeV7stkn4Zvrz06k3rUa+l5vVpd2vBjuXmPGt3/7D3x8qdl+Esxj/PSA2QP4mo/B5zxKQx18B3S+DJb8E07srPn85N1mE55Ol5gCfSEd4ZZf4eJ/wJ4F8O5QiFtW8ZpTcfDRpeZ963m1eR87XgxD7zUr11e93iAvra5qDPRa62LgXmAxsAeYo7XepZR6RilVvlbuNGC2tpbX5qQSUs2wiK2hG4DJ/SM5npHP6oOn+HXXCS7p0fLsaletLYHednnerq0C6BMVzHu/HWRfchb/vWkAt1xoGX6JvhAKMuDkbiguhMSNFfLno1r48s3MIbxwTW/euqFf1VW2TYm7h0m13L8YclPPLKBKSM0jsJknD1xS+3RQNzdl80P4vPXHy2ZV6MBbzW2loN+NJtC06Wf2Ap59gwnwuxeYIYiDy+Gy/4ObF1TdQaxZc7Oj07WfmF7o+yNg/Qew5TPY/YMJdpHnWS0ZpeCqd0122txbbS8sBDO2PvdW8A40m/GUdbjcPUyO/u3/M4/z1TWw8EHTc1//gXmf0g6XWzRmKQsd2Br6Tzc7xGXYGvhofHaN0WutF2mtu2itO2qtn7Mce1JrvaDcOU9V11vXWn+qtb733JvcdFjLoa9sbPeW+Ht78OSPu0jPLWJCWW0bgMwkM1xhZSK2vLtHdaRzuD/fzhxacceislz5o2vMOGtx/tmNwC3c3RRTB7U9U7isSYuZahaC7TLZuVf3j6B3RBD/vKIHwb5NMNOjsR3fAft/Mb1O70qL3YLbmkB+6XNw4H/wRl+YMx2CIuGOP2Do3dXvF9DrarhrrakO+csj8NP95lvWsPsb9CU1GL9QmPxf0/Ne/ITt85b8A1L2wOT3wN/K/E+bvmaYa+i9sOkTeKWreX/aDTfvl7VFYxfeD2hTXbOJkFo35yA+NRdPd0WrwKo53WWaebkzrlcr5m5OJMDHg5FdyqX2la2IbdW72ue5rGcrUxOnsmBLfe+jq01hKbC5UOq80Kq3qZ+/Yw4Muh0fT3d+um+4o1vVdKx8xfQ8L5hp/X43Nxh2r9mq8dfHzcK6EQ/bnw4Z2Bpu/A42fWx685P/a/9mMk1Rx9Em6K5+HTqMhp5XVbx/78+wcZYJ4p0usf04nj5w2XPQZZzZ/CRmivlGZWu+KLgtxEwzO8WN+Kv1D5BGdh7/X3S8hLRcIoKbmbot1Zjcz0wEXtqjVcXUwLKMm/DuVq6yU/Qw06M/usZs5+d3HueIK2X+iBLWN7nJLIdL2Q+7f4RBt9dcWya8O9z8I4z+W+1z3pWCQbfBn346uzH9+ezif5gigD/9BdLLZYlnJJnMnNZ9TGlle7QfAbctNu9PTUkBwx+EkkJY+07d216PJNCfg4TUXLvGgId0COHOizpW3VQjeZf59K9uA5GaRA8zBdEOrTi/e/Nlek8BlBSpqmzVq+DhA0PvcXRLzi/unnDtR2aB2PczTGZRaYnZoaq40Ew0N8QCsNBOZlhn4yzbWTuNSAL9OUhItZ1DX567m0kz7BReaVw1ORZaVj9sU6OyydfS4mrrz583giJMz2n77Ca7yrDRpR42H3wDbz2/v7E5SosOJj00fq1JTV31KhxZacorh9pYrV0fRvwVCrNrl+bZQCTQ11FmfhFpuUV1z+ooyjO7QNUwEVujkE7gZ1lkVt1G4OeTmKkmoyHRSnVOV7T6DbMlpKWMtaiDPlPNuPkfL8KK/zN7HPe9oWGfs2VP6HoFrLMspHIgCfR1ZK08ca2k7AVdanVFbK0oZSaaQruYDAtn0H2iGaawlERwaZnHYNtX0O8m5xgzd6QrXjZVYoMiYcKrNY+z14eRf4X8dLMgy4Ek0NeRPTn01SrLuKkmh95uE16FW34598dpKnwCodsVEDvPjKO6sjVvmTHlC8/TNMemxDvApEreufLc5sVqI2KAWUi19p3q8/kbmAT6OrJWnrhWkneZQl7N2517Y7wDnG/sNmaaWYJ/YFnN5zqr7BSTux0ztX7+nQjTiWisIF9m5CMmYWLL5437vOVIoK+jhLRcAn08zFaAdZEca3LG3ZrwalVH6jgafENde/hm3TtmEdyIhxzdEnEuooeZRInVb0BxgUOaIIG+juLtTK206kzpg3OciHVm7p7Q+1rY9yvkpTu6NY0vLw02zDKLfELrfzcw0chG/BWyjsH2b2o+twHIytgyB5ebT9zrPrNrs+P41Fy61rLI1hlZx80fcn2MzzuzmKmw/n14e5CZnLXG2x8mvQMR/ev/+X95zGzgcslTtb/21AH44S5T96Tf9NpN/BXmwKJHoDDLrGwV57+OF5uFWytfhb43mVo6jUh69GUOrzRVARc+WGP+dmmpJjEt79wnYs8148bZtekHo54wy9PbDbf+k5cGc2+p//S1rBMm/3nVa7Drh9pdW1xg2pS40VSN/OZ6U2TMHgkb4f3hphb6yEfl34izUMqM1acfhVg769zXI+nRWxxKSKIDmIJancaYdDYbTmYVUFhcSmRdA/2Z0gc9qj/P1SkFo2qoah2/Dj65HH7+q6kiWF9i55n015DOZvl8RP+qlR9t+d8zcGIHTP3KbGSx7ClTRfLKN8wGK9YUF8LvL5jFPIERpgRB+xH19nJEE9BlHIT3NDWLek9p1DpC0qO3yM86xeHSlqSFD4FFj56ty21F/Lnm0CfvgqC2dg0RiRq0HQIXPQ4755jVtPVl+2zzjeLGOWb5/LwZVTfmsCZuGax9GwbNgO4TTNXIO/4wxee+vQnm32UqlpZ3cg/MGgMrX4Y+15ua8RLknY+bm8mrP7Xf1LlvzKdu1GdrwjwKMkgjgA9DHwcPb1Oj2sYM+TkvlpKJ2Po18mFoO8z06k8fPPfHO7nH9Mhjpprl8xNehYR1Zvl8dbJPwg93mm9qlz579nh4N7h9mRmK2fGt2SDk8B/mA2TN22Y7v8xj5hvAVe82fvqfaDw9rjKr2f94uVFLfEigt/AqyiRd+7PgsEZPesf8of/vGavnxqfmohS0CbZdntimonzzbUECff1xc4erPzA7+8y77dwXWW2fDcrdLJMHU1Gzz/Vm+fzRNdavKS2F+Xearfmu/dhM4pbn7gkX/x1uW2I6Ep9daYZzlvzdDBXevc58AxDOzc0dhj8EyTvPbJvZKE/baM/UxPkUZ5KBH4lpeRxsMcJ89V77dtUtxDA59K0DfSqWHLbXqX2gS2SSrb4FR8HEt8wGLCv+XffHKS01e352GgP+5TaqH/+SWbQ0b4b1aoTr3oGD/4PL/lN92enIgXDHSvPvK/eUyRia9nXF5xLOLWaKGbr9/cVG69VLoLfwL83Cyz8EgBV7U8xX7/Ce5qt4VnKFcxNSc+s+EVufpQ9ERT0mwoBbTJrsweV1e4yjq8zOXzFTKx73DoBrPoLsE2Zytvwf6LGtsOxp6Dbh7BZ/1fHyNXVXHjloJv0bo+aKaDrcPWH4A5C0CQ7/3ihPKYEeoLQEf3LwDQqla8sAVuw7ab56X/ux+Sr+w52mp2cRb2d5YquSd4FHMzP2K+rfZf+BsG5mGCXnVO2v3/4teAVA1/FV74voD2OehD0/md2DwOwhOvc2s4vQxLdqF7QlwLuuvjeCfyszVt8IJNADxTlp5pdmwYzqFsbGI6lkFxSbSbRx/2d6h+vMTjH5RSUkZxac20RseHcpfdBQvHxNzzsv3SxYqs1X46I8s4tTj4nmcawZep+pFvrrE3ByL/zyqCmpfPUH4Hse7MsrmgZPH7jwL6Yufvy6Bn86CfRAVnoKAO6+LRjdNZyiEs3qA5be4IBbTO7zsqfh2FYS00zVyqgWzWw9nG1S+qBxtOoFl/7bTHatf9/+6/YtMqtRKw/blOfmZvZS9fIzE6rbvjKrV9vJ3railgb8GXxDGqVXL4EeyLYEeq+AEAZENyfA24Pf9llWMioFV75pvprPv4uE09lAHVMrs5Mh93SNm4GLenDBDOhyOSx9Eo7vsO+a7d+axUrtashhD2gJV70HOSfNBtwXPXbu7RWux8sPhtwNB5bCsW0N+lQS6IHcjNMA+ASG4OnuxoguoazYm4Iu+9rv2wLGPgMpe1B7fwKoW0GzshWx0qNveEqZjBbfELMmojCn+vNzTpmSyL2vtW/FYpdL4dbFcMO3jV63RDiRC2aAd5BZLNeAJNADBVlmmMY3yNR0H9U1nBOZ+ew9kXX2pJ6ToUVHuu3/Lz6eijB/79o/0QkJ9I3KL8QMs5w+AL/WUEohdp5Je42ZZv/jtx0CzZqfWxuFa/MJgsEzzQT/yT0N9jQS6IHCLJMXHdDc5DKP6mL+u6Js+AbM5OmIv9IqL45r/Hej6pIxkbwLAiMlODSmDhfB8AfNpg+75ts+b/tsM6TWUuoPiUY2+C7w9DOVLRuIBHqgxLIAJrh5OADhgT70igjkt70pFU+MmUKyWzi3lM6t20KH5F3Sm3eE0X+DiIGw4H5TZKyyU3FwbEvtevNC1Be/EBh0q6lqWR8lPKyQQA+ovHRytA/Nmp0taTCqSzib49PIyC06c0y7efBByUQ6FewxtUpqo7jArIqVFbGNz90TrpllqlHOu71qcbId34JyM+PzQjjC0HvBzRNWv94gDy+BHlAF6WQq/wrHRncLo6RUs/LA2V59em4RXxYMJ8crrOYCV5Wd2g+lxdKjd5QW7WHCa5Cw3tSsKVNaagJ9h1EQ0MphzRMuLqAVDLzF/HtsgLIIEugBz4IMct0r7hbVN6o5wb6ephyCRXxqLgV4kdj9NstCh/X2P4mUPnC8mOugzw3mQ/rIKnMsYZ0ZzpFhG+Fo456Hq95pkBXTEugB7+IM8j0CKxxzd1OM7BzG7/tPUlpqPmHL6tAz8BZo1qJ2KVHJsWY7vBYd66vZoi7Gv2iKk30/0xQn2/GtmQiTypHC0RqwJIYEeqBZSRaFnlVrgI/uFsap7EJij5mNIhLSTKCPDA+FofeYlZfHt9v3JMm7TA0Wybl2LO8AU8Mo+yT8cLfJxOl+pVm8IoSTkkAP+JVmUeJdNdCP7ByGUvDbPjN8k5CaS4ifF37eHmcXOtizfLms9IFMxDYNbfqZ4mT7fzG7PcVMcXSLhGhQLh/oi4tLCNTZaJ+que0h/t70iQw+k0+fkJp3dkXsmYUOC0xxK1tyTsGc6ZCTApEXNMRLEHUx9F6z6XhQWzMRK4QTc/lAn5GVibcqxs3X+iKm0V3D2ZaQTmpOIfGpuRVLH5QtdFhlY6HDvl/h3aGwf7EpoVDNhuOikbm5wbRv4K5VUklUOD2XD/SZaaa37u5nPdCP6hqG1rB870mS0vNoW75qZdlCh53fQeqhs8cLsmDBffDNVFMMbcYKuPB+CShNjYeX7M8qXILLB/rsdFPQzDsgxOr9vSOCCPHz4psN8ZSU6qpVK8sWOqx63dw+utZs/rz1S7P0fsZyGZsXQjiUy6eA5GaYgmY+AaFW73dzU1zUNYzvtyQBENW8UqAPaAX9bzY7Drl7wcZZ0DwabvnFFL0SQggHc/kefWGW6dH7BVsP9GDG6ctYLU984f2Aho0fmqB/5yoJ8kKIJsOuHr1SahzwBuAOzNJaP1/p/teA0ZabvkC41jpYKdUXeA8IBEqA57TW39ZT2+tFUY4paBbYPNzmOSM7h+GmwE0pWgf5VD0hOAqu/QS8/aHjxQ3VVCGEqJMaA71Syh14BxgLJAIblVILtNa7y87RWj9Y7vz7gH6Wm7nAzVrrOKVUG2CzUmqx1jq9Hl/DOSm1BHqfQOtj9ABBvp4MiG5OSlYBHu42vgT1mNgQzRNCiHNmT4/+AuCA1voQgFJqNjAJ2G3j/OuBfwForfeXHdRaH1NKnQTCgPRzaHO9UvnpFOOGh5d/tec9f00MWfnF1Z4jhBBNkT2BPgJIKHc7ERhs7USlVDTQHlhu5b4LAC+gYQou15FbQTrZKoDgGupMdAyr/oNACCGaqvqejJ0GzNVal5Q/qJRqDXwB3KK1Lq18kVJqplJqk1JqU0pKSuW7G5RnYdXKlUII4UzsCfRJQFS525GWY9ZMA74pf0ApFQj8DPxda73O2kVa6w+01gO11gPDwsLsaFL98SnKpKBS5UohhHAm9gT6jUBnpVR7pZQXJpgvqHySUqob0BxYW+6YFzAf+FxrPbd+mly/mpVmUeQlqyOFEM6rxkCvtS4G7gUWA3uAOVrrXUqpZ5RS5VNNpgGzta6wPcoUYCTwZ6XUNstP3/pr/rkpLikloDSLEu9gRzdFCCEajF159FrrRcCiSseerHT7KSvXfQl8eQ7ta1DpeUUEqxxymgU7uilCCNFgXHplbHp2HoEqFzffFo5uihBCNBiXDvSZaab8gYefBHohhPNy6UCfnW5SOb0DJNALIZyXSwf6PEtBs2ZBtguaCSHE+c6lA31Z5Ur/oMbN3RdCiMbk0oG+JKf6TUeEEMIZuHSgL81NN780s76NoBBCOAOXDvQqP938Inn0Qggn5tKB3r0gnTzVDNw9Hd0UIYRoMC4d6L2KMshzl4JmQgjn5tKB3qc4kwJPCfRCCOfmsoG+uKQUv9IsiqVypRDCyblsoE/PKyKIHKlcKYRwei4b6NNyCglWOeArqZVCCOfmsoE+NbuAILLxkEAvhHByLhvoM7Ky8FbFePpLQTMhhHNz2UCfm1FWuVIKmgkhnJvLBvr8TEvlykCpcyOEcG4uG+iLsqWgmRDCNbhsoC/OSTO/SEEzIYSTc9lAT15ZoA92aDOEEKKhuW6gP1O5Unr0Qgjn5rKB3rMwnRLcwcvf0U0RQogG5bKB3qsogzyPAFDK0U0RQogG5ZKBvrikFN+SbAo9paCZEML5uWSgNwXNsimWgmZCCBfgkoHeFDTLRntLj14I4fxcMtCn5hQSRA6qmdS5EUI4P5cM9Gm5pkSxu7+kVgohnJ/TBPqiklK2xqeRnJlf47npOfkEqly8pHKlEMIFOE2gP51dyOR31/DzjuM1npudYerc+ARK5UohhPNzmkDfKsiHloHebE9Mr/HcAkvlSk8/KWgmhHB+ThPoAfpGBbMtIb3G84pyUs0vUudGCOECnCzQN+fo6VxScwqrPa/0TKCXyVghhPNzskAfDMD2mnr1eVKiWAjhOpwq0MdEBuGmqHH4RhVkmF98ghu8TUII4WhOFej9vD3oHB5QY6D3LLTcL2P0QggX4FSBHszwzfbEdLTWVu8vKimlWXEWBe5+4O7ZyK0TQojG53yBvm0w6blFHDmda/X+9NwiglQORZ6BjdwyIYRwDLsCvVJqnFJqn1LqgFLqcSv3v6aU2mb52a+USi9335+UUnGWnz/VY9utqmlCNi23kCCyKZHKlUIIF1FjoFdKuQPvAJcDPYDrlVI9yp+jtX5Qa91Xa90XeAv43nJtC+BfwGDgAuBfSqkGTXXpHO5PM093m+P0ZypXyvi8EMJF2NOjvwA4oLU+pLUuBGYDk6o5/3rgG8vvlwFLtdapWus0YCkw7lwaXBMPdzd6RwaxtdoefQ5KAr0QwkXYE+gjgIRytxMtx6pQSkUD7YHltb22PvWLCmbPsUwKikuq3JeaU0SwypHyB0IIl1Hfk7HTgLla66oRthpKqZlKqU1KqU0pKSnn3Ii+UcEUlpSy53hWlfvScgoIIhuvAAn0QgjXYE+gTwKiyt2OtByzZhpnh23svlZr/YHWeqDWemBYWJgdTape37bBAGyLT6tyX1ZWFt6qGA8/WRUrhHAN9gT6jUBnpVR7pZQXJpgvqHySUqob0BxYW+7wYuBSpVRzyyTspZZjDapVoA/hAd5WJ2QLsk+ZX6T8gRDCRXjUdILWulgpdS8mQLsDH2utdymlngE2aa3Lgv40YLYut1JJa52qlHoW82EB8IzWOrV+X0JVSimblSyLs6WgmRDCtdQY6AG01ouARZWOPVnp9lM2rv0Y+LiO7auzvm2DWbI7mfTcQoJ9vc4cL81NN79IoBdCuAinWxlbpmzhVOVevcq3jNtLQTMhhItw2kDfOyIIZaWSpVuB5bb06IUQLsJpA32Ajyedw/0rBPqiklK8izLNDQn0QggX4bSBHiyVLBPOVrJMzy0iWGVTqjzAy8/BrRNCiMbh5IG+OWm5RcSnmkqWabmFBJNDkVcQKOXg1gkhRONw8kAfDJwdp0/NKSRI5UjlSiGES3HqQN+lpalkuTU+HYB0S4li2VlKCOFKnDrQe7i70TsiqFyP3ozRu/nKRKwQwnU4daAHs3Bq97FMCotLz5Qo9vSXgmZCCNfh/IH+TCXLTMumIzm4S49eCOFCnD7Q9yk3IZuWk0egypUceiGES7Gr1s35rE2QD2GWSpZFWZbyBxLohRAuxOl79GWVLLcnpFOcY6lcKXVuhBAuxOkDPZhx+kOncshJt+xeJT16IYQLcZlAD+BWkGEOSKAXQrgQlwj0MZGmkmUQ2eaALJgSQrgQlwj0AT6edArzJ1iVBXrp0QshXIdLBHowwzdB5JgbMhkrhHAhrhPo2wYTrHIo9vQHd6fPKhVCiDNcJtBf1rMVMSGlUudGCOFyXKZrG+rvTWhLN8iUQC+EcC0u06MHIC9NMm6EEC7HBQO99OiFEK7FtQJ9froEeiGEy3GdQK+16dFLaqUQwsW4TqAvyoOSQunRCyFcjusE+jwpUSyEcE0uGOiDHdoMIYRobC6TRy89eiGcW1FREYmJieTn5zu6KQ3Kx8eHyMhIPD097b7GdQJ90mbz35BOjm2HEKJBJCYmEhAQQLt27VBKObo5DUJrzenTp0lMTKR9+/Z2X+c6QzdxS6Flbwhs4+iWCCEaQH5+PiEhIU4b5MHsmBcSElLrby2uEejzMyB+LXQe6+iWCCEakDMH+TJ1eY2uEegPrgBdAl0uc3RLhBBOKj09nXfffbfW140fP5709PT6b1A5rhHo45aahVIRAx3dEiGEk7IV6IuLi6u9btGiRQQHBzdQqwznn4wtLYW4JdBpjNShF0I0mMcff5yDBw/St29fPD098fHxoXnz5uzdu5f9+/dz1VVXkZCQQH5+Pvfffz8zZ84EoF27dmzatIns7Gwuv/xyhg8fzpo1a4iIiODHH3+kWbNm59w25498J7ZDzknofKmjWyKEaCRP/7SL3ccy6/Uxe7QJ5F9X9rR5//PPP09sbCzbtm3jt99+44orriA2NvZMdszHH39MixYtyMvLY9CgQVxzzTWEhIRUeIy4uDi++eYbPvzwQ6ZMmcK8efO46aabzrntzh/o45YCCjqOcXRLhBAu5IILLqiQAvnmm28yf/58ABISEoiLi6sS6Nu3b0/fvn0BGDBgAEeOHKmXtrhAoF8CEf3BP8zRLRFCNJLqet6Nxc/P78zvv/32G8uWLWPt2rX4+voyatQoqymS3t7eZ353d3cnLy+vXtri3JOxOachcRN0lmwbIUTDCggIICsry+p9GRkZNG/eHF9fX/bu3cu6desatW12BXql1Dil1D6l1AGl1OM2zpmilNqtlNqllPq63PEXLcf2KKXeVI2Z6HpgGaAlf14I0eBCQkK48MIL6dWrF4888kiF+8aNG0dxcTHdu3fn8ccfZ8iQIY3athqHbpRS7sA7wFggEdiolFqgtd5d7pzOwBPAhVrrNKVUuOX4MOBCIMZy6irgIuC3+nwRNsUtAb8waN23UZ5OCOHavv76a6vHvb29+eWXX6zeVzYOHxoaSmxs7JnjDz/8cL21y54e/QXAAa31Ia11ITAbmFTpnBnAO1rrNACt9UnLcQ34AF6AN+AJJNdHw2tUWmJ69J3Ggptzj1AJIUR17ImAEUBCuduJlmPldQG6KKVWK6XWKaXGAWit1wIrgOOWn8Va6z2Vn0ApNVMptUkptSklJaUur6OqxE1m60AZthFCuLj66up6AJ2BUcD1wIdKqWClVCegOxCJ+XC4WCk1ovLFWusPtNYDtdYDw8LqKTsmbgkod+h4cf08nhBCnKfsCfRJQFS525GWY+UlAgu01kVa68PAfkzgnwys01pna62zgV+AoefebDvELYa2Q2SjESGEy7Mn0G8EOiul2iulvIBpwIJK5/yA6c2jlArFDOUcAuKBi5RSHkopT8xEbJWhm3qXeQxO7JRhGyGEwI5Ar7UuBu4FFmOC9Byt9S6l1DNKqYmW0xYDp5VSuzFj8o9orU8Dc4GDwE5gO7Bda/1TA7yOig4sM/+VsgdCCGHfGL3WepHWuovWuqPW+jnLsSe11gssv2ut9UNa6x5a695a69mW4yVa6zu01t0t9z3UcC+lnLglEBgB4T0a5emEEKKuZYoBXn/9dXJzc+u5RWc5X95hcSEc/M0M27jAJgRCiKahKQd656t1k7AOCrOk7IEQolGVL1M8duxYwsPDmTNnDgUFBUyePJmnn36anJwcpkyZQmJiIiUlJfzzn/8kOTmZY8eOMXr0aEJDQ1mxYkW9t835Av3+xeDuBe1HOrolQghH+eVxk5BRn1r1hsuft3l3+TLFS5YsYe7cuWzYsAGtNRMnTuSPP/4gJSWFNm3a8PPPPwOmBk5QUBCvvvoqK1asIDQ0tH7bbOF8QzdxSyH6QvD2d3RLhBAuasmSJSxZsoR+/frRv39/9u7dS1xcHL1792bp0qU89thjrFy5kqCgoEZpj3P16NOOwKl9MODPjm6JEMKRqul5NwatNU888QR33HFHlfu2bNnCokWL+Mc//sGYMWN48sknG7w9ztWjj1tq/itplUKIRla+TPFll13Gxx9/THZ2NgBJSUmcPHmSY8eO4evry0033cQjjzzCli1bqlzbEJyrRx+3FFp0gNBOjm6JEMLFlC9TfPnll3PDDTcwdKgpBODv78+XX37JgQMHeOSRR3Bzc8PT05P33nsPgJkzZzJu3DjatGnTIJOxSmtd7w96LgYOHKg3bdpU+wuL8uCF9jDgT3D5C/XfMCFEk7Znzx66d+/u6GY0CmuvVSm1WWs90Nr5zjN0k58B3a6AbhMc3RIhhGhSnGfoJqAVXPuRo1shhBBNjvP06IUQQlglgV4I4TSa2pxjQ6jLa5RAL4RwCj4+Ppw+fdqpg73WmtOnT+Pj41Or65xnjF4I4dIiIyNJTEyk3rYjbaJ8fHyIjIys1TUS6IUQTsHT05P27ds7uhlNkgzdCCGEk5NAL4QQTk4CvRBCOLkmVwJBKZUCHK3mlFDgVCM1p7akbXUjbasbaVvdOGvborXWYdbuaHKBviZKqU226jk4mrStbqRtdSNtqxtXbJsM3QghhJOTQC+EEE7ufAz0Hzi6AdWQttWNtK1upG1143JtO+/G6IUQQtTO+dijF0IIUQvnTaBXSo1TSu1TSh1QSj3u6PZUppQ6opTaqZTappSqwxZZ9dqWj5VSJ5VSseWOtVBKLVVKxVn+27wJte0ppVSS5b3bppQa74B2RSmlViildiuldiml7rccd/j7Vk3bmsL75qOU2qCU2m5p29OW4+2VUustf6/fKqW8mlDbPlVKHS73vvVt7LaVa6O7UmqrUmqh5XbDvG9a6yb/A7gDB4EOgBewHejh6HZVauMRINTR7bC0ZSTQH4gtd+xF4HHL748DLzShtj0FPOzg96w10N/yewCwH+jRFN63atrWFN43BfhbfvcE1gNDgDnANMvx94G7mlDbPgWudeT7Vq6NDwFfAwsttxvkfTtfevQXAAe01oe01oXAbGCSg9vUZGmt/wBSKx2eBHxm+f0z4KrGbFMZG21zOK31ca31FsvvWcAeIIIm8L5V0zaH00a25aan5UcDFwNzLccd9b7ZaluToJSKBK4AZlluKxrofTtfAn0EkFDudiJN5B96ORpYopTarJSa6ejGWNFSa33c8vsJoKUjG2PFvUqpHZahHYcMK5VRSrUD+mF6gE3qfavUNmgC75tl+GEbcBJYivn2na61Lrac4rC/18pt01qXvW/PWd6315RS3o5oG/A68ChQarkdQgO9b+dLoD8fDNda9wcuB+5RSo10dINs0eZ7YZPp2QDvAR2BvsBx4BVHNUQp5Q/MAx7QWmeWv8/R75uVtjWJ901rXaK17gtEYr59d3NEO6yp3DalVC/gCUwbBwEtgMcau11KqQnASa315sZ4vvMl0CcBUeVuR1qONRla6yTLf08C8zH/4JuSZKVUawDLf086uD1naK2TLX+QpcCHOOi9U0p5YgLpV1rr7y2Hm8T7Zq1tTeV9K6O1TgdWAEOBYKVU2X4XDv97Lde2cZahMK21LgA+wTHv24XARKXUEcxQ9MXAGzTQ+3a+BPqNQGfLjLQXMA1Y4OA2naGU8lNKBZT9DlwKxFZ/VaNbAPzJ8vufgB8d2JYKygKpxWQc8N5Zxkc/AvZorV8td5fD3zdbbWsi71uYUirY8nszYCxmDmEFcK3lNEe9b9batrfcB7fCjIE3+vumtX5Cax2ptW6HiWfLtdY30lDvm6NnnWsxOz0ek21wEPi7o9tTqW0dMJlA24Fdjm4f8A3mq3wRZpzvNsz43/+AOGAZ0KIJte0LYCewAxNYWzugXcMxwzI7gG2Wn/FN4X2rpm1N4X2LAbZa2hALPGk53gHYABwAvgO8m1Dbllvet1jgSyyZOY76AUZxNuumQd43WRkrhBBO7nwZuhFCCFFHEuiFEMLJSaAXQggnJ4FeCCGcnAR6IYRwchLohRDCyUmgF0IIJyeBXgghnNz/A7W+QwkjjZmzAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(1,41),train_score_ls,label = 'train') # 训练\n",
    "plt.plot(range(1,41),test_score_ls,label = 'test') # 测试\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7330316742081447"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 参数确定，计算acc\n",
    "model = KNeighborsClassifier(n_neighbors=39)\n",
    "\n",
    "model.fit(train_X,train_y) \n",
    "score_r = model.score(test_X,test_y)\n",
    "score_r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.734440</td>\n",
       "      <td>0.766234</td>\n",
       "      <td>0.750000</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.731343</td>\n",
       "      <td>0.696682</td>\n",
       "      <td>0.713592</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.732962</td>\n",
       "      <td>0.733032</td>\n",
       "      <td>0.732620</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.734440  0.766234  0.750000      231\n",
       "1     1   0.731343  0.696682  0.713592      211\n",
       "2    总体   0.732962  0.733032  0.732620      442"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3GaussianNB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.naive_bayes import GaussianNB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7317248261653361"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练\n",
    "model = GaussianNB()\n",
    "model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "np.mean(model_s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6877828054298643"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 测试\n",
    "model = model.fit(train_X,train_y)\n",
    "model.score(test_X,test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.710407</td>\n",
       "      <td>0.679654</td>\n",
       "      <td>0.694690</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.665158</td>\n",
       "      <td>0.696682</td>\n",
       "      <td>0.680556</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.688807</td>\n",
       "      <td>0.687783</td>\n",
       "      <td>0.687943</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.710407  0.679654  0.694690      231\n",
       "1     1   0.665158  0.696682  0.680556      211\n",
       "2    总体   0.688807  0.687783  0.687943      442"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.4RandomForestClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调节参数\n",
    "train_score_ls = []\n",
    "test_score_ls = []\n",
    "for n_estimators in range(10,370,50):\n",
    "    model = RandomForestClassifier(random_state=0,n_estimators=n_estimators)\n",
    "    model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "    train_score_ls.append(np.mean(model_s))\n",
    "    \n",
    "    model = model.fit(train_X,train_y)\n",
    "    test_score_ls.append(model.score(test_X,test_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(10,370,50),train_score_ls,label = 'train') # 训练\n",
    "plt.plot(range(10,370,50),test_score_ls,label = 'test') # 测试\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7601809954751131"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 参数确定，计算acc\n",
    "model = RandomForestClassifier(random_state=0,n_estimators=250)\n",
    "\n",
    "model.fit(train_X,train_y) \n",
    "score_r = model.score(test_X,test_y)\n",
    "score_r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.759336</td>\n",
       "      <td>0.792208</td>\n",
       "      <td>0.775424</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.761194</td>\n",
       "      <td>0.725118</td>\n",
       "      <td>0.742718</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.760223</td>\n",
       "      <td>0.760181</td>\n",
       "      <td>0.759811</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.759336  0.792208  0.775424      231\n",
       "1     1   0.761194  0.725118  0.742718      211\n",
       "2    总体   0.760223  0.760181  0.759811      442"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.5LinearSVC线性支持向量分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import LinearSVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7918201133144476"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 调节参数\n",
    "model = LinearSVC(random_state=0,\n",
    "                 multi_class = 'ovr',\n",
    "                penalty = 'l2',\n",
    "                tol = 1e-5\n",
    "                 )\n",
    "model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "np.mean(model_s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8054298642533937"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = model.fit(train_X,train_y)\n",
    "model.score(test_X,test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.805907</td>\n",
       "      <td>0.826840</td>\n",
       "      <td>0.816239</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.804878</td>\n",
       "      <td>0.781991</td>\n",
       "      <td>0.793269</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.805416</td>\n",
       "      <td>0.805430</td>\n",
       "      <td>0.805274</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.805907  0.826840  0.816239      231\n",
       "1     1   0.804878  0.781991  0.793269      211\n",
       "2    总体   0.805416  0.805430  0.805274      442"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.6NuSVC核支持向量分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import NuSVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 调节参数\n",
    "train_score_ls = []\n",
    "test_score_ls = []\n",
    "for nu in np.linspace(0.2,0.4,10):\n",
    "    model = NuSVC(random_state=0,nu=nu,kernel = 'rbf')\n",
    "    model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "    train_score_ls.append(np.mean(model_s))\n",
    "    \n",
    "    model = model.fit(train_X,train_y)\n",
    "    test_score_ls.append(model.score(test_X,test_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.linspace(0.2,0.4,10),train_score_ls,label = 'train') # 训练\n",
    "plt.plot(np.linspace(0.2,0.4,10),test_score_ls,label = 'test') # 测试\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8122171945701357"
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 参数确定，计算acc\n",
    "model = NuSVC(random_state=0,nu=0.4,kernel = 'rbf')\n",
    "\n",
    "model.fit(train_X,train_y) \n",
    "score_r = model.score(test_X,test_y)\n",
    "score_r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.810924</td>\n",
       "      <td>0.835498</td>\n",
       "      <td>0.823028</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.813725</td>\n",
       "      <td>0.786730</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.812262</td>\n",
       "      <td>0.812217</td>\n",
       "      <td>0.812035</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.810924  0.835498  0.823028      231\n",
       "1     1   0.813725  0.786730  0.800000      211\n",
       "2    总体   0.812262  0.812217  0.812035      442"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.6-预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [],
   "source": [
    "predict_data = pd.read_excel(r'D:\\jupyter\\DK\\DK数据\\2数据处理\\论文\\5预测集.xlsx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>编号</th>\n",
       "      <th>标引</th>\n",
       "      <th>TI 文献标题</th>\n",
       "      <th>预处理文本</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>...</th>\n",
       "      <th>90</th>\n",
       "      <th>91</th>\n",
       "      <th>92</th>\n",
       "      <th>93</th>\n",
       "      <th>94</th>\n",
       "      <th>95</th>\n",
       "      <th>96</th>\n",
       "      <th>97</th>\n",
       "      <th>98</th>\n",
       "      <th>99</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>无</td>\n",
       "      <td>Global and Local Path Planning on Robotic Whee...</td>\n",
       "      <td>global local path planning robotic wheelchair ...</td>\n",
       "      <td>0.083548</td>\n",
       "      <td>-0.566226</td>\n",
       "      <td>0.849573</td>\n",
       "      <td>-0.523747</td>\n",
       "      <td>-0.461814</td>\n",
       "      <td>-0.802333</td>\n",
       "      <td>...</td>\n",
       "      <td>0.944567</td>\n",
       "      <td>-0.821641</td>\n",
       "      <td>0.039972</td>\n",
       "      <td>0.544614</td>\n",
       "      <td>-0.242744</td>\n",
       "      <td>-0.524843</td>\n",
       "      <td>0.139025</td>\n",
       "      <td>-0.672346</td>\n",
       "      <td>0.377510</td>\n",
       "      <td>-0.824080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>9</td>\n",
       "      <td>无</td>\n",
       "      <td>An Integrated Optimization Design with Structu...</td>\n",
       "      <td>integrated optimization design structural para...</td>\n",
       "      <td>0.344408</td>\n",
       "      <td>-0.333129</td>\n",
       "      <td>-0.446275</td>\n",
       "      <td>-0.667702</td>\n",
       "      <td>-0.526884</td>\n",
       "      <td>-1.245266</td>\n",
       "      <td>...</td>\n",
       "      <td>1.004501</td>\n",
       "      <td>0.083715</td>\n",
       "      <td>0.395748</td>\n",
       "      <td>0.640105</td>\n",
       "      <td>-0.122635</td>\n",
       "      <td>-0.318392</td>\n",
       "      <td>-0.482040</td>\n",
       "      <td>0.075554</td>\n",
       "      <td>0.967336</td>\n",
       "      <td>-1.005564</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 104 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   编号 标引                                            TI 文献标题  \\\n",
       "0   3  无  Global and Local Path Planning on Robotic Whee...   \n",
       "1   9  无  An Integrated Optimization Design with Structu...   \n",
       "\n",
       "                                               预处理文本         0         1  \\\n",
       "0  global local path planning robotic wheelchair ...  0.083548 -0.566226   \n",
       "1  integrated optimization design structural para...  0.344408 -0.333129   \n",
       "\n",
       "          2         3         4         5  ...        90        91        92  \\\n",
       "0  0.849573 -0.523747 -0.461814 -0.802333  ...  0.944567 -0.821641  0.039972   \n",
       "1 -0.446275 -0.667702 -0.526884 -1.245266  ...  1.004501  0.083715  0.395748   \n",
       "\n",
       "         93        94        95        96        97        98        99  \n",
       "0  0.544614 -0.242744 -0.524843  0.139025 -0.672346  0.377510 -0.824080  \n",
       "1  0.640105 -0.122635 -0.318392 -0.482040  0.075554  0.967336 -1.005564  \n",
       "\n",
       "[2 rows x 104 columns]"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_data.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [],
   "source": [
    "predict_X = predict_data.iloc[:,4:]\n",
    "predict_data['标引'] = model.predict(predict_X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9788"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_data[predict_data['标引'] == 1].shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9765"
      ]
     },
     "execution_count": 157,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_data[predict_data['标引'] == 0].shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(19553, 104)"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>编号</th>\n",
       "      <th>标引</th>\n",
       "      <th>TI 文献标题</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>Global and Local Path Planning on Robotic Whee...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>An Integrated Optimization Design with Structu...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>15</td>\n",
       "      <td>0</td>\n",
       "      <td>A flexible dual-mode proximity sensor based on...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>A Research Tool for the Power and Performance ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>17</td>\n",
       "      <td>0</td>\n",
       "      <td>A Compliant Modular Robotic Hand with Fabric F...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   编号  标引                                            TI 文献标题\n",
       "0   3   1  Global and Local Path Planning on Robotic Whee...\n",
       "1   9   1  An Integrated Optimization Design with Structu...\n",
       "2  15   0  A flexible dual-mode proximity sensor based on...\n",
       "3  16   1  A Research Tool for the Power and Performance ...\n",
       "4  17   0  A Compliant Modular Robotic Hand with Fabric F..."
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predict_resp = predict_data.iloc[:,0:3]\n",
    "predict_resp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [],
   "source": [
    "predict_resp.to_excel(r'D:\\jupyter\\DK\\DK数据\\2数据处理\\论文\\7预测结果.xlsx',index = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.7SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.svm import SVC\n",
    "kernel_list = ['linear', 'poly', 'rbf', 'sigmoid']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 10折交叉验证  kernel\n",
    "train_score_ls = []\n",
    "test_score_ls = []\n",
    "\n",
    "for kernel in kernel_list:\n",
    "    model = SVC(kernel=kernel, probability=True,random_state=0)\n",
    "    model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "    train_score_ls.append(np.mean(model_s))\n",
    "    \n",
    "    model = model.fit(train_X,train_y)\n",
    "    test_score_ls.append(model.score(test_X,test_y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(kernel_list,train_score_ls,label = 'train') # 训练\n",
    "plt.plot(kernel_list,test_score_ls,label = 'test') # 测试\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8099547511312217"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 参数确定，计算acc\n",
    "model = SVC(kernel='linear', probability=True,random_state=0)\n",
    "\n",
    "model.fit(train_X,train_y) \n",
    "score_r = model.score(test_X,test_y)\n",
    "score_r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.807531</td>\n",
       "      <td>0.835498</td>\n",
       "      <td>0.821277</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.812808</td>\n",
       "      <td>0.781991</td>\n",
       "      <td>0.797101</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.810050</td>\n",
       "      <td>0.809955</td>\n",
       "      <td>0.809736</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.807531  0.835498  0.821277      231\n",
       "1     1   0.812808  0.781991  0.797101      211\n",
       "2    总体   0.810050  0.809955  0.809736      442"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.8BernoulliNB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.naive_bayes import BernoulliNB"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7118593870718517"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练\n",
    "model = BernoulliNB()\n",
    "model_s = cross_val_score(model,train_X,train_y,cv=5)\n",
    "np.mean(model_s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7194570135746606"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 测试\n",
    "model = model.fit(train_X,train_y)\n",
    "model.score(test_X,test_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Label</th>\n",
       "      <th>Precision</th>\n",
       "      <th>Recall</th>\n",
       "      <th>F1</th>\n",
       "      <th>Support</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.766169</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.712963</td>\n",
       "      <td>231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.680498</td>\n",
       "      <td>0.777251</td>\n",
       "      <td>0.725664</td>\n",
       "      <td>211</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>总体</td>\n",
       "      <td>0.725272</td>\n",
       "      <td>0.719457</td>\n",
       "      <td>0.719026</td>\n",
       "      <td>442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Label  Precision    Recall        F1  Support\n",
       "0     0   0.766169  0.666667  0.712963      231\n",
       "1     1   0.680498  0.777251  0.725664      211\n",
       "2    总体   0.725272  0.719457  0.719026      442"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_label_list = test_y\n",
    "predict_label_list = model.predict(test_X)\n",
    "eval_model(test_label_list, predict_label_list, labelEncoder.classes_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 统计详情\n",
    "evaluation_now = list(eval_model(test_label_list, predict_label_list, labelEncoder.classes_).iloc[2,[1,2,3]].values)\n",
    "evaluation_now.append(score_r)\n",
    "\n",
    "evaluation_ls.append(evaluation_now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.统计评估指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [],
   "source": [
    "evaluation_data = pd.DataFrame(evaluation_ls)\n",
    "evaluation_data.columns = ['precision','recall','f1','accuracy']\n",
    "evaluation_data['模型'] = ['LogisticRegression','KNeighborsClassifier','GaussianNB'\n",
    "                         , 'RandomForestClassifier','LinearSVC','NuSVC', 'SVC'\n",
    "                         , 'BernoulliNB', 'GradientBoostingClassifier', 'AdaBoostClassifier'\n",
    "                         , 'MLPClassifier']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [],
   "source": [
    "evaluation_data.to_excel(r'D:\\jupyter\\DK\\DK数据\\2数据处理\\论文\\6评估结果.xlsx',index = False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
